unit MunicipioDM;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, DB, FileUtil, LResources, Forms, Controls, Graphics,
  Dialogs, ZDataset, ZSqlUpdate, ZSequence, MainDM, QueryConditions;

type

  { TMunicipioData }

  TMunicipioData = class(TMainDataModule)
    MunicipioDatasource: TDatasource;
    MunicipioZQuery: TZQuery;
    MunicipioZQueryid_municipio: TLongintField;
    MunicipioZQuerynome_municipio: TStringField;
    MunicipioZQueryuf: TStringField;
    MunicipioZSequence: TZSequence;
    MunicipioZUpdate: TZUpdateSQL;
    /// Criação do Módulo de Dados
    procedure DataModuleCreate(Sender: TObject);
    /// Abre o DataSet
    procedure OpenDataSet(); override;
    /// Fecha o DataSet
    procedure CloseDataSet(); override;
    /// Realiza busca
    /// @param(Condicoes são as condições para a busca)
    /// @param(Tabela é a tabela no banco de dados)
    procedure Search(Condicoes: TQueryConditions; Tabela: string); override;
  end;

var
  MunicipioData: TMunicipioData;

implementation

uses ConnectionDM;

{ TMunicipioData }

procedure TMunicipioData.DataModuleCreate(Sender: TObject);
begin
  MainDataSet := MunicipioZQuery;
end;

procedure TMunicipioData.OpenDataSet;
begin
  ConnectionData.EmptyQuery(MunicipioZQuery, 'municipio');
end;

procedure TMunicipioData.CloseDataSet;
begin
  MunicipioZQuery.Close();
end;

procedure TMunicipioData.Search(Condicoes: TQueryConditions; Tabela: string);
begin
  //! Ordenação, neste caso ORDER BY UF, NOME_MUNICIPIO, a solução mais adequada é criar um parâmetro para isto no TConsicoesConsulta
  ConnectionData.OpenQueryConditions(MunicipioZQuery, Tabela, Condicoes);
end;


initialization
  {$I municipiodm.lrs}

end.

